# @Filename:    createFromOther
# @Author:      王佳伟
# @Time:        2025-03-28 15:19
# @Describe:    来自现有数据的数组
import numpy as np

# numpy.asarray
# 此函数类似于numpy.array，除了它有较少的参数。 这个例程对于将 Python 序列转换为ndarray非常有用。

# 将列表转换为ndarray

x = [1, 2, 3]
a = np.asarray(x)
print(a)

# 设置了dtype
x = [1, 2, 3]
a = np.asarray(x, dtype=float)
print(a)

# 来自元组的ndarray
x = (1, 2, 3)
a = np.asarray(x)
print(a)

# 来自元组列表的ndarray
x = [(1, 2, 3), (4, 5, 6)]
a = np.asarray(x)
print(a)

print("=======================")

# numpy.frombuffer 此函数将缓冲区解释为一维数组。 暴露缓冲区接口的任何对象都用作参数来返回ndarray。

s = b'Hello World'
a = np.frombuffer(s, dtype = 'S1')
print(a)

print("=======================")

# numpy.fromiter 此函数从任何可迭代对象构建一个ndarray对象，返回一个新的一维数组。
# 以下示例展示了如何使用内置的range()函数返回列表对象。 此列表的迭代器用于形成ndarray对象。

# 使用range函数创建列表对象
list = range(5)
it = iter(list)
# 使用迭代器创建ndarray
x = np.fromiter(it, dtype=float)
print(x)

print("=======================")

# numpy.arange 这个函数返回ndarray对象，包含给定范围内的等间隔值。
x = np.arange(5)
print(x)

x = np.arange(5, dtype = float)
print(x)

x = np.arange(10, 20, 2)
print(x)

print("=======================")

# numpy.linspace
# 此函数类似于arange()函数。 在此函数中，指定了范围之间的均匀间隔数量，而不是步长。 此函数的用法如下。

x = np.linspace(10, 20, 5)
print(x)

# 将endpoint设为false
x = np.linspace(10, 20, 5, endpoint = False)
print(x)

# 输出retstep值
x = np.linspace(1, 2, 5, retstep = True)
print(x)

print("=======================")

# numpy.logspace
# 此函数返回一个ndarray对象，其中包含在对数刻度上均匀分布的数字。 刻度的开始和结束端点是某个底数的幂，通常为 10。

x = np.linspace(1, 2, 10)
print(x)

# 默认底数是10
a = np.logspace(1.0, 2.0, num = 10)
print(a)

# 将对数空间的底数设置为2
a = np.logspace(1, 10, num = 10, base = 2)
print(a)




